using SmartLink.DTOS;
using SmartLink.DTOS.Parking;
using SmartLink.DTOS.Parking.PagePara;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SmartLink.Application.IServices
{
    public interface IParkingAppServices
    {
        Results<List<ParkingLotLocationListDTO>> GetAppParkingLotLocationList(GetParkingLotLocationListPagePara para);
        Results<PageData<ParkingLotListDTO>> GetParkingLotList(GetParkingLotListPagePara para, int oid);
        Results<SingleParkingDTO> GetParkingLotDetail(ParkingLotIDDTO parkingLotIDDTO);
        Results<ParkingLotInfoDTO> GetAppParkingLotInfo(GetParkingLotInfoPagePara para);
        Results<AppParkingLotDetailDTO> GetAppParkingLotDetail(GetParkingLotDetailPagePara para);
        Results AddParkingLot(int curUserID, int OID, ParkingDTO addParkingDTO);
        Results<List<ParkingLotFloorDTO>> GetAppParkingLotRelationList(GetIDDTO para);
        Results UpdateParkingLot(int curUserID, int OID, ParkingDTO addParkingDTO);
        Results UpdateParkingLotStatus(int curUserID, ParkingStatusDTO parkingStatusDTO);
        Results AddFloorsAreasForParkinglot(int curUserID, int OID, PlateLotFloorsDTO plateLotFloorsDTO);
        Results AddParkingSpace(int curUserID, InParingSpaceDTO inParingSpaceDTO);
        Results<List<ParkingLotFloorDTO>> GetParkingLotFloorArea(GetIDDTO para);
        Results<PageData<ParkingSpaceDTO>> GetParkingSpaceList(GetParkingSpaceListPagePara para, int oid);
        Results<PageData<ParkingSpaceDTO>> GetSingleParkingSpaceList(GetUnderParkingLotSpaceListPagePara para);
        Results<List<SingleParkingSpaceStatisticsDTO>> GetSingleParkingSpaceStatistics(int PLID);
        Results<List<UnBusyParkingSpaceDTO>> GetAppUnBusyParkingSpaceList(GetIDDTO para);
        Results<UnBusyParkingSpaceDTO> GetUnBusyParkingSpaceDetail(int userID, int psID);
    }
}
